package org.hales.util;

/**
 * @author 陈建康
 */
public class EasyStringUtil {
    /**
     * 将小驼峰命名法的字符串转换为下划线命名法
     * @param camelCaseStr 小驼峰命名法的字符串
     * @return 下划线命名法的字符串
     */
    public static String camelToSnake(String camelCaseStr) {
        if (camelCaseStr == null || camelCaseStr.isEmpty()) {
            return camelCaseStr;
        }

        StringBuilder snakeCaseStr = new StringBuilder();
        for (char c : camelCaseStr.toCharArray()) {
            if (Character.isUpperCase(c)) {
                char var1 = snakeCaseStr.charAt(snakeCaseStr.length() - 1);
                // 如果不是字符串的第一个字符且前面一个字符是小写字母，则插入下划线
                if (snakeCaseStr.length() > 0 && Character.isLowerCase(snakeCaseStr.charAt(snakeCaseStr.length() - 1))) {
                    snakeCaseStr.append('_');
                }
                // 将大写字母转换为小写字母
                snakeCaseStr.append(Character.toLowerCase(c));
            } else {
                snakeCaseStr.append(c);
            }
        }
        return snakeCaseStr.toString();
    }
}
